It is common for applications that are displayed in GUIs to be “localizable,” so that they can be instructed, when running, to display text for a particular locale (i.e., language, dialect or the like). During development such applications are provided with sets of text strings for each text object they contain and the text strings correspond to different locales and provide the actual text to display when the application is instructed to use that particular locale. So, for example, if the text object is a button which in English would have the text “Yes,” in French the text could be “Oui” and in German, “Ja.” The set of locales and text strings for the button would then be as seen in Table 1 below.
TABLE 1LocaleText stringen“Yes”fr“Oui”de“Ja”
In order to allow this variation in texts, the source code for the application can take the form the follows:
Button b = new Button( );b.setText(“Yes”);                in which the text is “hard coded”, the source code is of the form:        
 Button b = new Button( ); b.setMessage(Messages.getMessage(“guiclass.wizard.create.file”,“KEY_1”);                where guiclass.wizard.create.file is a file available at runtime that contains the line:KEY_1=Yes.        
This example provides the default button text, but the system may also include a a file for each language bundle with a suffix and different values (e.g., guiclass.wizard.create.file.fr) for a locale (e.g., fr) which contains the line:KEY_1=Oui.
This example provides the default button text, but the system may also include a a file for each language bundle with a suffix and different values, (e.g., guiclass.wizard.create.file.fr) for locale (e.g., fr) which contains the line:KEY_1=Oui.
When the applications are compiled, these files are created to provide the text strings required for different locales, and are called locale resource bundles. A particular locale to use can be set at runtime of the application, for example, by means of a command-line switch. For example, applications written in the Java™ programming language can use a switch -locale(en) to instruct the application use English, -locale(fr) to use French, and so on. When the application is run, it dynamically switches all of the user visible strings, such as window titles, control labels, information and error messages, help text, and the like to the desired language, using the text strings in the locale resource bundle. In this way, the application does not need to be recompiled for use in different locales.
However, it can be the case that an application is being viewed by users who would prefer to use different languages. This might occur when a first user who prefers to use English is demonstrating the use of an application to a second user who prefers to use French, for example. In this case, the first user may be “driving” the application on their PC and sharing their display using social collaboration software with the second user who is in another country. In another example, the first user may be in a meeting in which they are “driving” the application on a main screen, but the second user (and any other users in the room) can log on with their own device to follow the demonstration.